package br.com.ceped.controlador;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Restrictions;

import br.com.ceped.dao.Dao;
import br.com.ceped.dao.IDao;
import br.com.ceped.modelo.EquipamentoPorCurso;
import br.com.ceped.modelo.EquipamentoPorCuso_PK;

public class ControladorEquipamentoPorCurso implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void cadastrar_equipamentoPorCurso(EquipamentoPorCurso equipamentoPorCurso,Session s){
		IDao<EquipamentoPorCurso> dao = new Dao<EquipamentoPorCurso>(s, EquipamentoPorCurso.class);
		dao.save(equipamentoPorCurso);
	}
	
	public void remover_equipamentoPorCurso(EquipamentoPorCurso equipamentoPorCurso,Session s){
		IDao<EquipamentoPorCurso> dao = new Dao<EquipamentoPorCurso>(s, EquipamentoPorCurso.class);
		dao.delete(equipamentoPorCurso);
	}
	
	public void editar_equipamentoPorCurso(EquipamentoPorCurso equipamentoPorCurso,Session s){
		IDao<EquipamentoPorCurso> dao = new Dao<EquipamentoPorCurso>(s, EquipamentoPorCurso.class);
		dao.update(equipamentoPorCurso);
	}
	
	public EquipamentoPorCurso procurar_equipamentoPorCurso(EquipamentoPorCuso_PK equipamentoPorCuso_PK,Session s){
		IDao<EquipamentoPorCurso> dao = new Dao<EquipamentoPorCurso>(s, EquipamentoPorCurso.class);
		return dao.load(equipamentoPorCuso_PK);
	}
	
	public List<EquipamentoPorCurso> listar_equipamentoPorCurso(Session s){
		IDao<EquipamentoPorCurso> dao = new Dao<EquipamentoPorCurso>(s, EquipamentoPorCurso.class);
		return dao.list();
	}
	
	public List<EquipamentoPorCurso> listar_equipamentoPorCurso(String nome_campo,Long valor_campo,Session s){
		IDao<EquipamentoPorCurso> dao = new Dao<EquipamentoPorCurso>(s, EquipamentoPorCurso.class);
		return dao.list(nome_campo,valor_campo);
	}
	/**Esse metodo entra com a seguinte finalidade, vai listar todos os equipamentos em que o codigo sejaque e que o campo seja maior que zeri */
	public List<EquipamentoPorCurso> listar_equipamentoPorCurso(String nome_campo,Long valor_campo,String nome_campo2,int valor_campo2,Session s){
		IDao<EquipamentoPorCurso> dao = new Dao<EquipamentoPorCurso>(s, EquipamentoPorCurso.class);
		return dao.list(nome_campo,valor_campo,nome_campo2,valor_campo2);
	}
	
	@SuppressWarnings("unchecked")
	public List<EquipamentoPorCurso> listar_equipamentoPorCurso(String nome_campo,Long valor_campo,String comparar,String compara2,Session s){
		Criteria c = s.createCriteria(EquipamentoPorCurso.class);
		c.add(Expression.eq(nome_campo, valor_campo));
		c.add(Restrictions.not(Expression.eqProperty(comparar, compara2)));
		c.setCacheable(true);
		return c.list();
	}
	
}
